import java.lang.reflect.Array;
import java.util.Scanner;
import java.util.Arrays;
public class Practice {
////方法的递归--》套娃
////在方法里面自己调用自己。问题可以被拆分为各种子问题
////--》把原问题分解为小问题，小问题的解决方法和大问题得到解决方式是一样的
//    //一个方法在执行的过程中调用自身
//    //递归的条件： 自己调用自己 有一个终止条件（起始条件）
//    //最难的地方就是如何能够确定递推公式
//
//    //递归耗空间，容易出现栈溢出，不容易理解 循环容易理解，但是代码多
//    //可以递归的一定可以循环
////    public static void main(String[] args) {
////        Scanner scanner = new Scanner(System.in);
////        int n = scanner.nextInt();
////        //System.out.println(fac(n));
////        Print(1234);
////        System.out.println(fun(1234));
////    }
////
////    public static int fun(int num) {
////        if(num <= 9){
////            return num;
////        }else {
////            return num % 10 + fun(num / 10);
////        }
////    }
////
////    public static int fun2(int num) {
////        int sum = 0;
////        while(num != 0) {
////            sum += num % 10;
////            num /= 10;
////        }
////        return sum;
////    }
////
////    public static void Print(int n){
////        if(n>9) {
////            Print(n/10);
////            System.out.println(n%10);
////        }else{
////            System.out.println(n);
////        }
////
////    }
//////方法的重载： 名称必须相同，参数列表必须不同，与返回值无关系
////public static int fac(int n){
////        if(n == 1){
////            return 1;
////        }else{
////
////            return n*fac(n-1);
////        }
////
////}
////
////
////    public static void main1(String[] args) {
////        Scanner scanner = new Scanner(System.in);
////        int n = scanner.nextInt();
////
////
////    }
////
////    public static int fib(int n) {
////        int f1 = 1;
////        int f2 = 1;
////        int f3 = 1;
////        for (int i = 3; i <= n; i++) {
////            f3 = f1 + f2;
////            f1 = f2;
////            f2 = f3;
////        }
////        return f3;
////    }
//
//    //汉诺塔
////    public static void main(String[] args) {
////
////    }
////    public static void hannote(int n,char pos1,char pos2,char pos3) {
////        if(n == 1) {
////            return ;
////        }
////
////    }
////    public static void move(char pos1,char pos2) {
////        System.out.println("pos1-->pos2");
////    }
////数组的定义-》存储一组类型相同的数据
//    //存哪里？ ————》申请一块连续的内存
//    //怎么用？--》有下标，下标从0开始 （下标也称索引）
//    //int arr[] -->数组的类型是int[]  数组名称是arr，所以Java中定义数组
//    int[] array = new int[]{1 , 2 , 3 ,4 ,5 ,6};
//    int[] array1 = {1 , 2 , 3 , 4 , 5 , 6 };
//    int[] array3 = new int[10];
//    //定义数组的时候不能指定大小？？？
//    public static void main(String[] args) {
//
//    }


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //int n = scanner.nextInt();
        //System.out.println(fac(n));
        //System.out.println(sum(n));
        //printfun(12345678);
        //System.out.println(sum1(1234));
//        System.out.println(fib(1));
//        System.out.println(fib(2));
//        System.out.println(fib(3));
//        System.out.println(fib(4));

//        int[] array = new int[100];
//        for (int i = 0; i < 100; i++) {
//            array[i] = i + 1;
//        }
//    //    System.out.println(array[20]);
//        // System.out.println(array.toString(array));
//        prinfArray(array);
    }


    public static void hanota(int n,char pos1,char pos2,char pos3) {
        if(n == 1) {
            System.out.println("pos1->pos3");
        }
        hanota(n-1 , pos1 , pos2 ,pos3)
    }

    public static void prinfArray(int[] array) {
        //System.out.println(Arrays.toString(array));
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] +  " ");
        }
    }


    public static int fib(int n) {
        if(n <= 2) {
            return 1;
        }else {
            return fib(n - 1) + fib(n - 2);
        }
    }

    public static int sum1(int n) {
        if(n < 10) {
            return n;
        }else {
            return (n % 10 + sum1(n / 10));
        }
    }
    public static void printfun(int n) {
        if(n < 10) {
            System.out.println(n);
           // return ;
        }else {
            printfun(n / 10);
            System.out.println(n % 10);
        }
    }
    public static int sum(int n) {
        if(n == 1) {
            return 1;
        }else {
            return n + sum(n-1);
        }
    }
    public static int fac(int n) {
        if(n == 1) {
            return 1;
        }else {
            return n*fac(n-1);
        }
    }


}
